package xauth

import (
	"strings"
	"time"

	"gitee.com/xiaoyutab/xgotool/optional/xcache"
	"gitee.com/xiaoyutab/xgotool/xerror"
)

// 创建权限操作
//
//	c	待保存的权限详情
func CreateAuth(c *Authority) error {
	if c.Code == "" {
		errFun("权限标识位不能为空", nil)
		return xerror.New("权限标识位不能为空")
	}
	if len(strings.Split(c.Code, ":")) == 1 {
		errFun("权限标识位格式不正确", nil)
		return xerror.New("权限标识位格式不正确")
	}
	if c.Type == 0 {
		errFun("权限类型来源不能为空", nil)
		return xerror.New("权限类型来源不能为空")
	}
	if _default.DB == nil {
		errFun("数据库未连接", nil)
		return xerror.New("数据库未连接")
	}
	c.UpdatedAt = time.Now().Format(time.DateTime)
	if c.CreatedAt == "" {
		c.CreatedAt = c.UpdatedAt
	}
	err := _default.DB.Table(_default.AuthorityName).Save(c).Error
	if err != nil {
		errFun("权限存储错误", err)
		return err
	}
	// 权限位添加后，需要更新对应缓存
	// 但是因缓存不支持使用前缀的形式删除，所以此处直接清楚缓存库
	xcache.Clear()
	return nil
}
